*********************************************+**++++++++++++++++++++++++++++++++++++++++++++++++++++
**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++
***********************************++*****++++++==++++***+++++++++++++++++++++++++++++++++++++++++++
*****************************************++++++***+**##%######**+++++==++===========++++++++++++++++
*******************************+++***++++**********#%%%%%%@@@%%%##*+=========================+++++++
****************************++++++****#########*########%%%@@@@@@@%%#*+=============================
*****************************+****############%%%#####%%%###%%@@@@@@@@@%#++=========================
****************************##%%##*++**###########%###*###%##%%%@@@@@@@@@@%#**==-----------=========
***************************##%%#*=--=+****++=++++++****+*####%%%%%@@@@@@@@@%%##*=-----------------==
*************************#####*=:::::-----:::::----:----==*#**####%%%%@@%@@@@%%%*+------------------
********************+*#*#%%%%+::...:::::..::.:::::::::::---+#****#%%%%%%@@@@@@@@%#+---:::::---------
*******************+**#%%%%#+::::::::..........:::::::::----**+*##%%%%%%@@@@@@@@@%*+-::::::::::::---
******************++*%%@%%%#=:::::..................:::::---=*++*#%%%%%%@@@@@@@@@%#+=-::::::::::::::
******************+*%%%%%%%#+-:::...............:..::::::---=+=+*****#%#%%%%@%@@@@@#+-::::::::::::::
*****************+*#%%%%#**+=-:....................:::::-----====++**###%%%%%%@%@@@%#+::::::::::::::
***************++*##%%%%#*+:::...................:::::::--------==+***####%#%%%%@%%%%%+:::::::::::::
*************+*++*#######*+-::..............:.....:::::::------==++++**##%##%%%%%%%%%%#+-:::::::::::
************++++**###*#*#+--::::..................:::::::::----==++++**#%%%####%%@%%%%#*+-::::::::::
************++++*#####%%#*--:::::.........:.....::::---==+++++++*******#%%%%%%%%%%%%%%***+=-::::..::
***********+++++*####%%%%%=:::---==+++++++==-:.:--==+**#######*****##*####%%%%%%%%%%%#+------::.....
**********+++++++*%##%%%%%*=-=====+++**#**+++=::=+#*****=+*#***#*+**+++***%%@%%%%#%@%+=-:::.........
**********++++++++*#**#%##*+==--=++===++=---+=:::=###*+==-====+++====++***#%%%%%##%%#*=:............
*********+++++++++++*++*##+-:--------:----::-:::-=*****+=========---=++***###%@%##@#*=-:............
********+++++++++++=+++**++-::::::::::-::::-::::-=+++++==----------==++*****#%###%@#*=-:............
********++++++++++======+----:::::::::::::::::::-=+*+++=-:::::::---===++****##*#%%%#++=:............
******+++++++++++=========-:-:::..........::::.::-+++=+*=-::::::---==++*******#@@%*++=-:............
******++++++++++===========--:::......:-:::-:..::=+*+++##+=--:::--==++*****#%%@@%#+-::..............
*****++++++++++==========----:::::::---::.:-=-===+######*+======--==++*****%@%%%*+-:................
*****+++++++++==========------:::--==-:::::::--====++++++=++++=+=--=++*****%%#*=--::................
****+++++++++==========--------::------==--::::::::--==+++*##*=--:-=++*****#*-::::..................
****+++++++++=========-----------:::::::::-====---==+******+==--:-=+++****+-:.......................
***+++++++++==========------------::::::...:::-::----==========---++++***#+::.......................
**+++++++++==========---------::---:::::::::::::------=========--=+++*####*-..........:---:.........
**+++++++++=========----------:::----::::::::::::::------======-=+**########=-::::.:+#%%%%%*=.......
*+++++++++==========-----------::::-----:::::.....::::::----=++**###########%#%%%##%@@%%@@@@%*++=-:.
*+++++++++=========-----------::::::::--=--::.:..::::::----=+*##%%%%%%#####%%%%%%%@@%%%%%%%%%%%%%%%#
+++++++++==========------------::::::::::-==--::::--::--=++*#%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%
+++++++++==========------------::::::::=**--===+++++++**#############*****#%%%%%%%%%%%%%%%%%%%%%%%%%
++++++++==========------------:::::::=*%%%+:-====++*************++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%
++++++++==========------------::::-=+#%%#%%=:---====++==+++++========+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+++++++===========----------::---+####%%%%@*:::--------=====------=+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+++++++==========---------==+**#########%%@#:-::-------------:::-+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++++++===========---==+*###%%%%%#######*+*%#:::::::------::::-=+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+++++++===========*##%%%%%#%%%%#######***+#%+-::.::::::--==*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%
++++++========+*#%%%%%%%%#%%%%##%%######%%%%%#*-...:-+*#***#%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%
++++++======+#%%%%%%%%%%##%%%##%%####%%%%%%%%%%#==*#%%%%%@%#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%#
++++++====+#%%%%%%%%%%%%#%%%##%%####%%%%%%%%%%%%%%@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%#
++++++===*%%%%%%%%%%%%%%%%%%%%%%##%#%%%%%%%%%%%%%%%%%#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%##
+++++===*%%%%%%%%%%%%%%##%%%%%%##%%%%%%@%%%%%%%%%%%%%#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%##%
+++++==+%%%%%%%%%%%%%%##%%%%%%###%#%%%%@%#%%%%%%%%%%#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%